/**
 * DOM操作
 */

//给当前元素添加类名
export function addClass(el, class_name){
    //判断是否尊在该类名,什么都不做
    if(hasClass(el, class_name)) return
    //拆分当前元素的className
    let newClass = el.className.split(' ')
    //把传过来的class_name添加进去
    newClass.push(class_name)
    //重新给当前元素赋予类名
    el.className = newClass.join(' ')
}

//判断是否存在class
export function hasClass(el, class_name){
    //匹配类名，以空白字符开头或者结束
    let reg = new RegExp('(^|\\s)' + class_name + '(\\s|$)')
    return reg.test(el.className)
}

//获取或者设置 元素的属性值：data-
//(元素， 属性名称的后缀， 属性值)
export function getData(el, name, val){
    const prefix = 'data-'
    name = prefix+name
    if(val){
        //设置属性值
        return el.setAttribute(name, val)
    } else {
        //获取属性值
        return el.getAttribute(name)
    }
}

//检测浏览器支持哪一种型号
let elementStyle = document.createElement('div').style

let vendor = (() => {
    let transformNames = {
        webkit: 'webkitTransform',
        Moz: 'MozTransform',
        O: 'OTransform',
        ms: 'msTransform',
        standard: 'transform'
    }

    for (let key in transformNames) {
        if (elementStyle[transformNames[key]] !== undefined) {
        return key
        }
    }

    return false
})()
//获取浏览器前缀
export function prefixStyle(style) {
    if (vendor === false) {
        return false
    }
    if (vendor === 'standard') {
        return style
    }
    return vendor + style.charAt(0).toUpperCase() + style.substr(1)
}


//修改浏览器顶部标题
export function changeTitle(titleStr) {
    var titleObj = document.getElementById("title")
    titleObj.innerHTML = titleStr
}

//去除字符串前后空格
export function Trim(str){ 
    // str = toString(str)
    return str.replace(/(^\s*)|(\s*$)/g, ""); 
}

//生成随机的四位数
export function rnd(){
    var random = Math.floor(Math.random()*9000) + 1000
    return random;
}

//拷贝一个对象

export function cloneObj(obj) {
    var newObj = {};
    if (obj instanceof Array) {
        newObj = [];
    }
    for (var key in obj) {
        var val = obj[key]
        //newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; //arguments.callee 在哪一个函数中运行，它就代表哪个函数, 一般用在匿名函数中。
        newObj[key] = typeof val === 'object' ? cloneObj(val): val;
    }
    return newObj
}
